The use of robots to perform repetitive tasks has increased over the years. A robot can be pre-programmed to perform actions that are highly repetitive and/or require utmost precision (e.g., at the production line for automobiles and electronics) or actions that are too dangerous for humans (e.g., bomb disposal or exploration of other planets). However, a pre-programmed robot may fail to perform a desired action if the robot encounters an unforeseen circumstance. This drawback has limited the use of robots in fields that require human intelligence and decision-making ability.